// pages/demo27/demo27.js
Page({
    /**
     * 页面的初始数据
     */
    data: {
        // 图片文件路径，可以是临时文件路径或永久文件路径 (本地路径) ，不支持网络路径
        url: 'https://img.alicdn.com/imgextra/i2/2206686532409/O1CN01zSujAL1TfMnXlvNzs_!!2206686532409-0-lubanimage.jpg',
        // url: '../../assets/123.png',
        // address: '广氮新村幼儿园',
        address: '',
        name: '',
        latitude: '',
        longitude: '',
        scrollTop: 0
    },
    /**
     * @param {scrollTop} 滚动到页面的目标位置，单位 px
     * @param {duration} 滚动动画的时长，单位 ms
     * scrollTop是指相对于整个屏幕（不是指某一个控件）向上移动距离，如果屏幕刚好铺满，没有超出屏幕高度，则设置无效
     */
    btnClick: function (options) {
        wx.pageScrollTo({
            scrollTop: 200,
            duration: 1000,
            success(e) {
                console.log(e)
            },
            fail(e) {
                console.log(e)
            },
            complete(e) {
                console.log(e)
            }
        })
    },

    /** 
     * 获取菜单按钮（右上角胶囊按钮）的布局位置信息。坐标信息以屏幕左上角为原点
     * 有什么用啊我也不清楚~~~
    */
    getMenuInfo() {
        var data = wx.getMenuButtonBoundingClientRect()
        console.log(data)
    },

    chooseLocation() {
        const _this = this
        console.log()
        wx.chooseLocation({
            success(res) {
                console.log(res)
                // console.log(this)
                _this.setData({
                    latitude: res.latitude,
                    longitude: res.longitude,
                    address: res.name,
                    name: res.address,
                })
            }
        })
    },
    chooseAddress() {
        // wx.getSetting({
        //     success(res) {
        //         console.log(res)
        //     }
        // })
        wx.chooseAddress({
            success(res) {
                console.log(res)
            }
        });
        // wx.chooseAddress({
        //     success(res) {
        //         console.log(res)
        //     }
        // })
    },
    getLocation: function () {
        const _this = this
        wx.getLocation({
            type: 'gcj02', // 默认为 wgs84 返回 gps 坐标，gcj02 返回可用于 wx.openLocation 的坐标
            success: function (res) {
                // 这个是出发地的经纬度
                console.log(res.latitude); console.log(res.longitude);
                wx.openLocation({
                    // 这个是目的地的经纬度
                    latitude: _this.data.latitude, // 纬度，范围为-90~90，负数表示南纬
                    longitude: _this.data.longitude, // 经度，范围为-180~180，负数表示西经
                    // latitude: 23.133361, // 纬度，范围为-90~90，负数表示南纬  必传
                    // longitude: 113.404989, // 经度，范围为-180~180，负数表示西经 必传
                    scale: 8, // 缩放比例
                    name: _this.data.address,
                    address: _this.data.name,
                    success: function (r) {
                        console.log(r)
                    }
                })
            }
        })
    },
    // 长按保存功能--授权部分
    saveImage(e) {
        console.log(e)
        let _this = this
        // wx.showActionSheet显示操作菜单
        wx.showActionSheet({
            itemList: ['保存到相册'],
            success(res) {
                console.log(res)
                let url = e.currentTarget.dataset.url;
                // console.log(url)
                // wx.getSetting获取用户的当前设置。返回值中只会出现小程序已经向用户请求过的权限
                wx.getSetting({
                    success: (res) => {
                        console.log(res)
                        if (!res.authSetting['scope.writePhotosAlbum']) { //判断是否授权
                            wx.authorize({  //如果没授权，则向用户发起授权请求
                                scope: 'scope.writePhotosAlbum',
                                success: () => {
                                    // 同意授权
                                    _this.saveImgInner(url);
                                },
                                fail: (res) => {
                                    console.log(res);
                                    wx.showModal({
                                        title: '保存失败',
                                        content: '请开启访问手机相册权限',
                                        success(res) {
                                            wx.openSetting()
                                        }
                                    })
                                }
                            })
                        } else {
                            // 已经授权了
                            _this.saveImgInner(url);
                        }
                    },
                    fail: (res) => {
                        console.log(res);
                    }
                })
            },
            fail(res) {
                console.log(res.errMsg)
            }
        })
    },
    // 长按保存功能--保存部分
    saveImgInner(url) {
        // wx.getImageInfo 获取图片信息。网络图片需先配置download域名才能生效(很重要！！！)
        wx.getImageInfo({
            src: url,
            success: (res) => {
                console.log(res)
                let path = res.path;
                // 调用保存图片到本地相册API
                wx.saveImageToPhotosAlbum({
                    filePath: path,
                    success: (res) => {
                        console.log(res);
                        wx.showToast({
                            title: '已保存到相册',
                        })
                    },
                    fail: (res) => {
                        console.log(res);
                    }
                })
            },
            fail: (res) => {
                console.log(res);
            }
        })
        // 也可以使用以下方法保存图片
        // wx.downloadFile({
        //     url: url,
        //     success: (res) => {
        //         console.log(res)
        //         // 下载成功后再保存到本地
        //         wx.saveImageToPhotosAlbum({
        //             filePath: res.tempFilePath, // 返回的临时文件路径，下载后的文件会存储到一个临时文件
        //             success: (res) => {
        //                 console.log(res);
        //                 wx.showToast({
        //                     title: '已保存到相册',
        //                 })
        //             },
        //             fail: (res) => {
        //                 console.log(res);
        //             }
        //         })
        //     },
        //     fail: (res) => {
        //         console.log(res);
        //     }
        // })
    },

    // 新版本获取用户信息的方式wx.getUserProfile
    getUserProfile() {
        wx.getUserProfile({
            desc: "获取你的昵称、头像、地区及性别",
            success: res => {
                console.log(res)
                // let wxUserInfo = res.userInfo;
            },
            fail: res => {
                //拒绝授权
                that.showErrorModal('您拒绝了请求');
                return;
            }
        })
    },
    // wx.openSetting打开小程序权限设置界面
    openSetting() {
        wx.openSetting({
            success(res) {
                console.log(res)
            }
        })
    },

    /**
 * 分享
 */
  onShareAppMessage: function (ops) {
    return {
      path: '/pages/demo16/demo16',
      title: '分享好友测试',
    }
  },
  /**
   * 分享朋友圈
   */
  onShareTimeline: function () {
    var id = this.data.id
    console.log(id)
    return {
      title: '分享朋友圈测试',
      // query: {
      //   // key: value
      //   path: '/pages/views/job/jobFairDetailNew/jobFairDetailNew?id=' + id,
      // },
      query: `/pages/demo16/demo16`,
      imageUrl: ''
    }
  },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        // 整个小程序只有一个 App 实例，是全部页面共享的
        // 开发者可以通过 getApp 方法获取到全局唯一的 App 实例
        // 获取App上的数据或调用开发者注册在 App 上的函数
        const globalData = getApp()
        console.log(globalData)
        // selector选择器滚动
        // wx.pageScrollTo({
        //     scrollTop: 200,
        //     duration: 1000,
        //     selector: '#move',
        //     success(e) {
        //         console.log(e)
        //     }
        // })
        // An highlighted block
        // wx.showModal({
        //     title: '温馨提示',
        //     content: '正在请求您的个人信息',
        //     success(res) {
        //         if (res.confirm) {
        //             wx.getUserProfile({
        //                 desc: "获取你的昵称、头像、地区及性别",
        //                 success: res => {
        //                     console.log(res)
        //                     let wxUserInfo = res.userInfo;
        //                 },
        //                 fail: res => {
        //                     //拒绝授权
        //                     that.showErrorModal('您拒绝了请求');
        //                     return;
        //                 }
        //             })
        //         } else if (res.cancel) {
        //             //拒绝授权 showErrorModal是自定义的提示
        //             that.showErrorModal('您拒绝了请求');
        //             return;
        //         }
        //     }
        // })

        wx.getSetting({
            success(res) {
                // console.log(res)
                // 这个是获取某个功能权限的申请弹窗  比如说  这个就是获取麦克风的权限
                if (!res.authSetting['scope.record']) {
                    wx.authorize({
                        scope: 'scope.record',
                        success() {
                            wx.startRecord()
                        }
                    })
                }
            }
        })
    },

    onPageScroll: function(e) {
        // console.log(e)
        const _this = this
        _this.setData({
            scrollTop: e.scrollTop
        })
        // console.log(this.data.scrollTop)
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})

// 这里顺便学习一下同步缓存和异步缓存的区别
// 同步wx.setStorageSync和异步wx.setStorage的区别

// 1.StorageSync是Storage的同步版本
// 异步Storage
// setting
wx.setStorage({
    key: "key",
    data: "value"
})
// getting
wx.getStorage({
    key: 'key',
    success(res) {
        // console.log(res)
    }
})

// 同步StorageSync
// setting
wx.setStorageSync('key', 'value')
// getting
var value = wx.getStorageSync('key')


// 以Sync（同步，同时）结尾的都是都是同步缓存，二者的区别是，异步不会阻塞当前任务，同步缓存直到同步方法处理完才能继续往下执行。
// 通俗点说,异步就是不管保没保存成功,程序都会继续往下执行.同步是等保存成功了,才会执行下面的代码.
// 使用异步,性能会更好;而使用同步,数据会更安全
// 一般都使用同步，异步是为了用户体验的情况而选择，同步相对简单。



